Pattern recognition is used in many different aspects of modern technology. For example, modern cameras can detect faces, and optical character recognition (OCR) and automatic speech recognition (ASR) are now relatively common. While the capabilities of sophistication of pattern recognizers are steadily improving, they still have significant limitations.
Images, or more generally, any natural patterns, contain an enormous amount of information. Unfortunately, that data is not easily exploitable. In particular, there is no known pattern recognizer that would allow the processing of images in the same way that we can now process words. For example, text indexing is done by searching occurrences of words (typically dictionary entries). Anytime an occurrence is found, its location is stored in a hash-table or other similar mechanism. The relation between raw data (text) and search patterns (character strings) is direct. The same is not true, however, of image-based pattern recognizers.
The classic approach in pattern recognition is based on a priori knowledge of the information to extract for each specific recognition task. Thus, the structure of the algorithm of the pattern recognizer normally contains explicit routines and variables to implement this recognition function. This requires long periods of research and development to develop a pattern recognizer specific for each individual recognition category, be it, OCR, ASR, faces, facial expressions, gestures, etc. This process is labor intensive and increases the cost of resulting applications.